The present invention relates generally to peer to peer networking and more particularly to storing data in peer to peer networks.
Peer to peer networks for storing data may be overlay networks that allow data to be distributively stored in the network (e.g., at nodes). In the peer to peer networks, there are links between any two peers (e.g., nodes) that know each other. That is, nodes in the peer to peer network may be considered as being connected by virtual or logical links, each of which corresponds to a path in the underlying network (e.g., a path of physical links). Such a structured peer to peer network employs a globally consistent protocol to ensure that any node can efficiently route a search to some peer that has a desired file or piece of data. A common type of structured peer to peer network uses a distributed hash table (DHT) in which a variant of consistent hashing is used to assign ownership of each file to a particular peer in a way analogous to a traditional hash table's assignment of each key to a particular array slot.
However, traditional DHTs do not readily support data redundancy and may compromise the integrity of data stored in systems using DHTs. To overcome these obstacles, data items are N-way replicated, but this results in high storage overhead and often requires multiple hashing functions to locate copies of the data. Further, it is difficult to add support for monitoring data resiliency and automatic rebuilding of missing data.
Accordingly, improved systems and methods of organizing and storing data in peer to peer networks are required.